""" 
生成器函数执行过程中, yield 会保存当前函数的状态，并返回一个值
下次调用 next() 时，生成器会从上次 yield 的地方继续执行
"""

def simple_generator():
    yield 1
    yield 2
    yield 3


# 方法1: next()访问生成器
gen = simple_generator()
print(next(gen))  # 1
print(next(gen))  # 2
print(next(gen))  # 3
# print(next(gen))    # BUG: 异常StopIteration

# 方法2: 安全的访问生成器
gen = simple_generator()
for i in gen:
    print(i)
""" 
1
2
3
"""

# 方法3: 使用 List
print(list(simple_generator()))
'''
[1, 2, 3]
'''
